﻿using System;
using System.Windows.Forms;
using CuaHangMayTinh.BusinessEntities;
using CuaHangMayTinh.BusinessLogicLayer;
using CuaHangMayTinh.Utilities;

namespace CuaHangMayTinh.PresentationLayer
{
    /// <summary>
    /// form hiển thị thêm, cập nhật nhân viên
    /// </summary>
    public partial class FormNhanVienThem : Form,IFormThemTV<NhanVienEntity>
    {
        /// <summary>
        /// tạo 1 biến lưu text thông báo lỗi
        /// </summary>
        private string Textloi = string.Empty;

        /// <summary>
        /// tạo mới 1 entity để chứa entity 
        /// </summary>
        private NhanVienEntity entity;

        /// <summary>
        /// phương thức khởi tạo cho tình huống thêm nhân viên
        /// </summary>
        public FormNhanVienThem()
        {
            InitializeComponent();
            LoadcbbNghiepVu();
            this.Text = "Thêm nhân viên";
            btn_Them.Text = "Thêm";          
        }

        private void LoadcbbNghiepVu()
        {
            cbb_nghiepvu.DataSource = SubGroupUserManager.Find_All();
            cbb_nghiepvu.DisplayMember = "Name";
            cbb_nghiepvu.ValueMember = "IDSubGroupUser";
        }

        /// <summary>
        /// phương thức khởi tạo cho tính huống cập nhật
        /// </summary>
        /// <param name="entity"></param>
        public FormNhanVienThem(NhanVienEntity entity):this()
        {
            this.Text = "Cập nhật thông tin nhân viên "+entity.TenNV;
            this.entity = entity;
            SetEntity(entity);
            //chu y lam lai
            //cbb_tinhtrang.SelectedIndex = entity.TinhTrang;
        }

        /// <summary>
        /// sự kiện click vào button thêm
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_themmoi_click(object sender, EventArgs e)
        {
            if (CheckInput())
            {
                if (entity == null)
                {
                    NhanVienEntity nhanVienEntity = GetEntity();
                    if (NhanVienManager.InsertGetID(nhanVienEntity, ref Textloi) > 0)
                    {
                        MessageBox.Show("Thêm thành công");
                        DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        MessageBox.Show(Textloi);
                    }
                }
                else
                {
                    NhanVienEntity nhanVienEntity = GetEntity();
                    nhanVienEntity.MaNV = this.entity.MaNV;
                    if (NhanVienManager.UpDate(nhanVienEntity, ref Textloi))
                    {
                        MessageBox.Show("Cập nhật thành công!");
                        DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        MessageBox.Show(Textloi);
                    }
                }
            }
        }

        /// <summary>
        /// lấy thông tin từ form bỏ vào entity
        /// </summary>
        /// <returns></returns>
        public NhanVienEntity GetEntity()
        {
            NhanVienEntity entity = new NhanVienEntity()
            {
                MaNV = 0,
                CMND = txt_cmnd.Text,
                DiaChi = txt_diachi.Text,
                Email = txt_email.Text,
                GhiChu = txt_ghichu.Text,
                GioiTinh = radioButton_nam.Checked?true:false,
                NgaySinh = dtime_ngaysinh.Value,
                NghiepVu = (int)cbb_nghiepvu.SelectedValue,
                SoDT = txt_sdt.Text,
                TenNV = txt_tennhanvien.Text,
                TinhTrang = cbb_tinhtrang.SelectedIndex
            };
            return entity;
        }

        /// <summary>
        /// xóa trắng thông tin trên form
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_xoatrang_click(object sender, EventArgs e)
        {
            XoaTrang();
        }

        /// <summary>
        /// clear lại các mục đã nhập
        /// </summary>
        public void XoaTrang()
        {
            txt_diachi.Clear();
            txt_email.Clear();
            txt_cmnd.Clear();
            txt_sdt.Clear();
            txt_tennhanvien.Clear();
            cbb_nghiepvu.SelectedIndex = 0;
            cbb_tinhtrang.SelectedIndex = 0;
            dtime_ngaysinh.Value = DateTime.Now;
            radioButton_nam.Checked = true;
            txt_ghichu.Clear();
        }

        /// <summary>
        /// kiểm tra người dùng nhập
        /// </summary>
        /// <returns></returns>
        public bool CheckInput()
        {
            if (StringHelper.IsNullorEmpty(txt_tennhanvien.Text))
            {
                MessageBox.Show("Bạn chưa nhập tên nhân viên vào !");
                return false;
            }
            if (StringHelper.IsNullorEmpty(txt_cmnd.Text))
            {
                MessageBox.Show("Bạn chưa nhập chứng minh nhân dân vào !");
                return false;
            }
            if (!StringHelper.IsNullorEmpty(txt_sdt.Text) && !DataUtil.KiemTraSoDt(txt_sdt.Text))
            {
                MessageBox.Show("Bạn nhập số điện thoại không hợp lệ!");
                return false;
            }
            if (!StringHelper.IsNullorEmpty(txt_email.Text) && !DataUtil.KiemTraEmail(txt_email.Text))
            {
                MessageBox.Show("Bạn nhập email không hợp lệ!");
                return false;
            }
            return true;
        }

        /// <summary>
        /// lấy entity từ entity lên form
        /// </summary>
        /// <param name="entity"></param>
        public void SetEntity(NhanVienEntity entity)
        {
            btn_Them.Text = "Cập nhật";
            txt_diachi.Text = entity.DiaChi;
            txt_email.Text = entity.Email;
            txt_cmnd.Text = entity.CMND;
            txt_sdt.Text = entity.SoDT;
            txt_tennhanvien.Text = entity.TenNV;
            cbb_nghiepvu.SelectedValue= entity.NghiepVu;
            cbb_tinhtrang.SelectedIndex = entity.TinhTrang-1;
            dtime_ngaysinh.Value = entity.NgaySinh;
            if (entity.GioiTinh)
                radioButton_nam.Checked = true;
            else
                radioButton_nu.Checked = false;
            txt_ghichu.Text = entity.GhiChu;
        }

        private void buttonX1_Click(object sender, EventArgs e)
        {
            XoaTrang();
        }

        private void FormNhanVienThem_Load(object sender, EventArgs e)
        {

        }

        private void txt_sdt_KeyPress(object sender, KeyPressEventArgs e)
        {
            DataUtil.PressInt(e);
        }
    }
}
